#pragma once
#include <functional>
#include "Socket.h"        // 封装套接字操作
#include "InetAddress.h"   // 封装IP和端口
#include "Channel.h"      // 管理I/O事件回调
#include "EventLoop.h"     // 事件循环核心
#include "Connection.h"

class Acceptor {
private:
    EventLoop *loop_;       // 事件循环指针（由外部传入）
    Socket *servsock_;      // 服务端监听Socket（内部创建）
    Channel *acceptchannel_;// 监听Socket对应的Channel（绑定读事件回调）

    std::function<void(Socket*)> newconnectioncb_;
public:
    Acceptor(EventLoop *loop, const std::string &ip, const uint16_t port);
    ~Acceptor();

    void newconnection();

    void setnewconnectioncb(std::function<void(Socket*)> newconnectioncb);

};